home *** CD-ROM | disk | FTP | other *** search
- package javax.script;
-
- import java.security.AccessController;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import sun.misc.Service;
- import sun.misc.ServiceConfigurationError;
- import sun.reflect.Reflection;
- import sun.security.util.SecurityConstants;
-
- public class ScriptEngineManager {
- private static final boolean DEBUG = false;
- private HashSet<ScriptEngineFactory> engineSpis;
- private HashMap<String, ScriptEngineFactory> nameAssociations;
- private HashMap<String, ScriptEngineFactory> extensionAssociations;
- private HashMap<String, ScriptEngineFactory> mimeTypeAssociations;
- private Bindings globalScope;
-
- public ScriptEngineManager() {
- ClassLoader var1 = Thread.currentThread().getContextClassLoader();
- if (this.canCallerAccessLoader(var1)) {
- this.init(var1);
- } else {
- this.init((ClassLoader)null);
- }
-
- }
-
- public ScriptEngineManager(ClassLoader var1) {
- this.init(var1);
- }
-
- private void init(ClassLoader var1) {
- this.globalScope = new SimpleBindings();
- this.engineSpis = new HashSet();
- this.nameAssociations = new HashMap();
- this.extensionAssociations = new HashMap();
- this.mimeTypeAssociations = new HashMap();
- AccessController.doPrivileged(new 1(this, var1));
- }
-
- private void initEngines(ClassLoader var1) {
- Object var2 = null;
-
- try {
- if (var1 != null) {
- var7 = Service.providers(ScriptEngineFactory.class, var1);
- } else {
- var7 = Service.installedProviders(ScriptEngineFactory.class);
- }
- } catch (ServiceConfigurationError var5) {
- System.err.println("Can't find ScriptEngineFactory providers: " + var5.getMessage());
- return;
- }
-
- try {
- while(var7.hasNext()) {
- try {
- ScriptEngineFactory var3 = (ScriptEngineFactory)var7.next();
- this.engineSpis.add(var3);
- } catch (ServiceConfigurationError var4) {
- System.err.println("ScriptEngineManager providers.next(): " + var4.getMessage());
- }
- }
-
- } catch (ServiceConfigurationError var6) {
- System.err.println("ScriptEngineManager providers.hasNext(): " + var6.getMessage());
- }
- }
-
- public void setBindings(Bindings var1) {
- if (var1 == null) {
- throw new IllegalArgumentException("Global scope cannot be null.");
- } else {
- this.globalScope = var1;
- }
- }
-
- public Bindings getBindings() {
- return this.globalScope;
- }
-
- public void put(String var1, Object var2) {
- this.globalScope.put(var1, var2);
- }
-
- public Object get(String var1) {
- return this.globalScope.get(var1);
- }
-
- public ScriptEngine getEngineByName(String var1) {
- if (var1 == null) {
- throw new NullPointerException();
- } else {
- Object var2;
- if (null != (var2 = this.nameAssociations.get(var1))) {
- ScriptEngineFactory var3 = (ScriptEngineFactory)var2;
-
- try {
- ScriptEngine var13 = var3.getScriptEngine();
- var13.setBindings(this.getBindings(), 200);
- return var13;
- } catch (Exception var11) {
- }
- }
-
- for(ScriptEngineFactory var4 : this.engineSpis) {
- List var5 = null;
-
- try {
- var5 = var4.getNames();
- } catch (Exception var9) {
- }
-
- if (var5 != null) {
- for(String var7 : var5) {
- if (var1.equals(var7)) {
- try {
- ScriptEngine var8 = var4.getScriptEngine();
- var8.setBindings(this.getBindings(), 200);
- return var8;
- } catch (Exception var10) {
- }
- }
- }
- }
- }
-
- return null;
- }
- }
-
- public ScriptEngine getEngineByExtension(String var1) {
- if (var1 == null) {
- throw new NullPointerException();
- } else {
- Object var2;
- if (null != (var2 = this.extensionAssociations.get(var1))) {
- ScriptEngineFactory var3 = (ScriptEngineFactory)var2;
-
- try {
- ScriptEngine var13 = var3.getScriptEngine();
- var13.setBindings(this.getBindings(), 200);
- return var13;
- } catch (Exception var11) {
- }
- }
-
- for(ScriptEngineFactory var4 : this.engineSpis) {
- List var5 = null;
-
- try {
- var5 = var4.getExtensions();
- } catch (Exception var9) {
- }
-
- if (var5 != null) {
- for(String var7 : var5) {
- if (var1.equals(var7)) {
- try {
- ScriptEngine var8 = var4.getScriptEngine();
- var8.setBindings(this.getBindings(), 200);
- return var8;
- } catch (Exception var10) {
- }
- }
- }
- }
- }
-
- return null;
- }
- }
-
- public ScriptEngine getEngineByMimeType(String var1) {
- if (var1 == null) {
- throw new NullPointerException();
- } else {
- Object var2;
- if (null != (var2 = this.mimeTypeAssociations.get(var1))) {
- ScriptEngineFactory var3 = (ScriptEngineFactory)var2;
-
- try {
- ScriptEngine var13 = var3.getScriptEngine();
- var13.setBindings(this.getBindings(), 200);
- return var13;
- } catch (Exception var11) {
- }
- }
-
- for(ScriptEngineFactory var4 : this.engineSpis) {
- List var5 = null;
-
- try {
- var5 = var4.getMimeTypes();
- } catch (Exception var9) {
- }
-
- if (var5 != null) {
- for(String var7 : var5) {
- if (var1.equals(var7)) {
- try {
- ScriptEngine var8 = var4.getScriptEngine();
- var8.setBindings(this.getBindings(), 200);
- return var8;
- } catch (Exception var10) {
- }
- }
- }
- }
- }
-
- return null;
- }
- }
-
- public List<ScriptEngineFactory> getEngineFactories() {
- ArrayList var1 = new ArrayList(this.engineSpis.size());
-
- for(ScriptEngineFactory var3 : this.engineSpis) {
- var1.add(var3);
- }
-
- return Collections.unmodifiableList(var1);
- }
-
- public void registerEngineName(String var1, ScriptEngineFactory var2) {
- if (var1 != null && var2 != null) {
- this.nameAssociations.put(var1, var2);
- } else {
- throw new NullPointerException();
- }
- }
-
- public void registerEngineMimeType(String var1, ScriptEngineFactory var2) {
- if (var1 != null && var2 != null) {
- this.mimeTypeAssociations.put(var1, var2);
- } else {
- throw new NullPointerException();
- }
- }
-
- public void registerEngineExtension(String var1, ScriptEngineFactory var2) {
- if (var1 != null && var2 != null) {
- this.extensionAssociations.put(var1, var2);
- } else {
- throw new NullPointerException();
- }
- }
-
- private boolean canCallerAccessLoader(ClassLoader var1) {
- SecurityManager var2 = System.getSecurityManager();
- if (var2 != null) {
- ClassLoader var3 = this.getCallerClassLoader();
- if (var3 != null && (var1 != var3 || !this.isAncestor(var1, var3))) {
- try {
- var2.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION);
- } catch (SecurityException var5) {
- return false;
- }
- }
- }
-
- return true;
- }
-
- private ClassLoader getCallerClassLoader() {
- Class var1 = Reflection.getCallerClass(3);
- return var1 == null ? null : var1.getClassLoader();
- }
-
- private boolean isAncestor(ClassLoader var1, ClassLoader var2) {
- do {
- var2 = var2.getParent();
- if (var1 == var2) {
- return true;
- }
- } while(var2 != null);
-
- return false;
- }
-
- // $FF: synthetic method
- static void access$000(ScriptEngineManager var0, ClassLoader var1) {
- var0.initEngines(var1);
- }
- }
-